package com.cookor.poi.modules.phy.entity;

import com.cookor.poi.common.persistence.DataEntity;
import com.cookor.poi.common.utils.excel.annotation.ExcelField;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.math.BigDecimal;
import java.util.Date;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;

public class TOrder extends DataEntity<TOrder> {
  public static int type_normal = 1;
  
  public static int type_phy = 2;
  
  public static final int order_status_wait_pay = 0;
  
  public static final int order_status_payed = 1;
  
  public static final int order_status_used = 2;
  
  public static final int order_status_failed = 3;
  
  public static final int order_status_wait_refund = 4;
  
  public static final int order_status_refunding = 5;
  
  public static final int order_status_refunded = 6;
  
  public static final int order_status_retailing = 7;
  
  public static final int order_status_wait_action = 8;
  
  public static final int order_status_wait_evaluate = 9;
  
  public static final int order_status_success = 10;
  
  public static final int order_status_cancel = 11;
  
  public static final int pay_status_wait_pay = 0;
  
  public static final int pay_status_payed = 1;
  
  private static final long serialVersionUID = 1L;
  
  private Integer tenantId;
  
  private Integer bookId;
  
  private String openId;
  
  private Integer actionId;
  
  private Integer patientId;
  
  private Integer officeId;
  
  private Integer doctorId;
  
  private Integer rankId;
  
  private Integer proRankId;
  
  private Integer stockId;
  
  private String tenantName;
  
  private String tenantAddress;
  
  private String patientName;
  
  private String patientAddress;
  
  private String patientMobile;
  
  private String patientCard;
  
  private String officeName;
  
  private String doctorName;
  
  private String doctorPicUrl;
  
  private String rankName;
  
  private String proRankName;
  
  private Integer type;
  
  private String orderNo;
  
  private Integer onlineType;
  
  private Integer status;
  
  private Date bookDate;
  
  private Integer bookDateType;
  
  private String bookDateDetail;
  
  private Integer bookNo;
  
  private BigDecimal payAmount;
  
  private Date payDate;
  
  private Integer withOutCancel;
  
  private Integer withOutAction;
  
  private Date queryBookDateUp;
  
  private Date queryBookDateDown;
  
  private String queryOrderNo;
  
  public TOrder() {}
  
  public TOrder(String id) {
    super(id);
  }
  
  @NotNull(message = "租户id不能为空")
  public Integer getTenantId() {
    return this.tenantId;
  }
  
  public void setTenantId(Integer tenantId) {
    this.tenantId = tenantId;
  }
  
  @NotNull(message = "openid不能为空")
  public String getOpenId() {
    return this.openId;
  }
  
  public void setOpenId(String openId) {
    this.openId = openId;
  }
  
  public Integer getActionId() {
    return this.actionId;
  }
  
  public void setActionId(Integer actionId) {
    this.actionId = actionId;
  }
  
  @NotNull(message = "就诊人id不能为空")
  public Integer getPatientId() {
    return this.patientId;
  }
  
  public void setPatientId(Integer patientId) {
    this.patientId = patientId;
  }
  
  @NotNull(message = "科室id不能为空")
  public Integer getOfficeId() {
    return this.officeId;
  }
  
  public void setOfficeId(Integer officeId) {
    this.officeId = officeId;
  }
  
  @NotNull(message = "医生id不能为空")
  public Integer getDoctorId() {
    return this.doctorId;
  }
  
  public void setDoctorId(Integer doctorId) {
    this.doctorId = doctorId;
  }
  
  @NotNull(message = "职称id不能为空")
  public Integer getRankId() {
    return this.rankId;
  }
  
  public void setRankId(Integer rankId) {
    this.rankId = rankId;
  }
  
  @NotNull(message = "专家级别id不能为空")
  public Integer getProRankId() {
    return this.proRankId;
  }
  
  public void setProRankId(Integer proRankId) {
    this.proRankId = proRankId;
  }
  
  @Length(min = 1, max = 64, message = "租户名称长度必须介于 1 和 64 之间")
  @ExcelField(title = "机构名称", type = 1, align = 2, sort = 10)
  public String getTenantName() {
    return this.tenantName;
  }
  
  public void setTenantName(String tenantName) {
    this.tenantName = tenantName;
  }
  
  @Length(min = 1, max = 64, message = "租户地址长度必须介于 1 和 64 之间")
  public String getTenantAddress() {
    return this.tenantAddress;
  }
  
  public void setTenantAddress(String tenantAddress) {
    this.tenantAddress = tenantAddress;
  }
  
  @Length(min = 1, max = 64, message = "就诊人姓名长度必须介于 1 和 64 之间")
  @ExcelField(title = "姓名", type = 1, align = 2, sort = 20)
  public String getPatientName() {
    return this.patientName;
  }
  
  public void setPatientName(String patientName) {
    this.patientName = patientName;
  }
  
  @Length(min = 1, max = 64, message = "就诊人地址长度必须介于 1 和 64 之间")
  @ExcelField(title = "性别", type = 1, align = 2, sort = 30, dictType = "sex")
  public String getPatientAddress() {
    return this.patientAddress;
  }
  
  public void setPatientAddress(String patientAddress) {
    this.patientAddress = patientAddress;
  }
  
  @Length(min = 1, max = 64, message = "就诊人电话长度必须介于 1 和 64 之间")
  @ExcelField(title = "电话", type = 1, align = 2, sort = 40)
  public String getPatientMobile() {
    return this.patientMobile;
  }
  
  public void setPatientMobile(String patientMobile) {
    this.patientMobile = patientMobile;
  }
  
  @Length(min = 1, max = 64, message = "就诊人身份证长度必须介于 1 和 64 之间")
  public String getPatientCard() {
    return this.patientCard;
  }
  
  public void setPatientCard(String patientCard) {
    this.patientCard = patientCard;
  }
  
  @Length(min = 1, max = 64, message = "科室名称长度必须介于 1 和 64 之间")
  @ExcelField(title = "具体时间", type = 1, align = 2, sort = 80)
  public String getOfficeName() {
    return this.officeName;
  }
  
  public void setOfficeName(String officeName) {
    this.officeName = officeName;
  }
  
  @Length(min = 1, max = 64, message = "医生名称长度必须介于 1 和 64 之间")
  public String getDoctorName() {
    return this.doctorName;
  }
  
  public void setDoctorName(String doctorName) {
    this.doctorName = doctorName;
  }
  
  @Length(min = 0, max = 256, message = "医生头像长度必须介于 0 和 256 之间")
  public String getDoctorPicUrl() {
    return this.doctorPicUrl;
  }
  
  public void setDoctorPicUrl(String doctorPicUrl) {
    this.doctorPicUrl = doctorPicUrl;
  }
  
  @Length(min = 1, max = 64, message = "职称名称长度必须介于 1 和 64 之间")
  public String getRankName() {
    return this.rankName;
  }
  
  public void setRankName(String rankName) {
    this.rankName = rankName;
  }
  
  @Length(min = 1, max = 64, message = "专家级别名称长度必须介于 1 和 64 之间")
  public String getProRankName() {
    return this.proRankName;
  }
  
  public void setProRankName(String proRankName) {
    this.proRankName = proRankName;
  }
  
  @NotNull(message = "类型不能为空")
  public Integer getType() {
    return this.type;
  }
  
  public void setType(Integer type) {
    this.type = type;
  }
  
  @Length(min = 1, max = 32, message = "订单号长度必须介于 1 和 32 之间")
  public String getOrderNo() {
    return this.orderNo;
  }
  
  public void setOrderNo(String orderNo) {
    this.orderNo = orderNo;
  }
  
  public Integer getOnlineType() {
    return this.onlineType;
  }
  
  public void setOnlineType(Integer onlineType) {
    this.onlineType = onlineType;
  }
  
  @NotNull(message = "订单状态不能为空")
  @ExcelField(title = "状态", type = 1, align = 2, sort = 60, dictType = "order_status")
  public Integer getStatus() {
    return this.status;
  }
  
  public void setStatus(Integer status) {
    this.status = status;
  }
  
  @JsonFormat(pattern = "yyyy-MM-dd")
  @NotNull(message = "预约就诊时间不能为空")
  @ExcelField(title = "预约日期", type = 1, align = 2, sort = 70)
  public Date getBookDate() {
    return this.bookDate;
  }
  
  public void setBookDate(Date bookDate) {
    this.bookDate = bookDate;
  }
  
  @NotNull(message = "上午还是下午不能为空")
  public Integer getBookDateType() {
    return this.bookDateType;
  }
  
  public void setBookDateType(Integer bookDateType) {
    this.bookDateType = bookDateType;
  }
  
  @Length(min = 1, max = 64, message = "具体时间长度必须介于 1 和 64 之间")
  public String getBookDateDetail() {
    return this.bookDateDetail;
  }
  
  public void setBookDateDetail(String bookDateDetail) {
    this.bookDateDetail = bookDateDetail;
  }
  
  public BigDecimal getPayAmount() {
    return this.payAmount;
  }
  
  public void setPayAmount(BigDecimal payAmount) {
    this.payAmount = payAmount;
  }
  
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  public Date getPayDate() {
    return this.payDate;
  }
  
  public void setPayDate(Date payDate) {
    this.payDate = payDate;
  }
  
  @NotNull(message = "BookNo不能为空")
  @ExcelField(title = "编号", type = 1, align = 2, sort = 90)
  public Integer getBookNo() {
    return this.bookNo;
  }
  
  public void setBookNo(Integer bookNo) {
    this.bookNo = bookNo;
  }
  
  @NotNull(message = "BookId不能为空")
  public Integer getBookId() {
    return this.bookId;
  }
  
  public void setBookId(Integer bookId) {
    this.bookId = bookId;
  }
  
  public Integer getWithOutCancel() {
    return this.withOutCancel;
  }
  
  public void setWithOutCancel(Integer withOutCancel) {
    this.withOutCancel = withOutCancel;
  }
  
  public Integer getWithOutAction() {
    return this.withOutAction;
  }
  
  public void setWithOutAction(Integer withOutAction) {
    this.withOutAction = withOutAction;
  }
  
  public Integer getStockId() {
    return this.stockId;
  }
  
  public void setStockId(Integer stockId) {
    this.stockId = stockId;
  }
  
  public Date getQueryBookDateUp() {
    return this.queryBookDateUp;
  }
  
  public void setQueryBookDateUp(Date queryBookDateUp) {
    this.queryBookDateUp = queryBookDateUp;
  }
  
  public Date getQueryBookDateDown() {
    return this.queryBookDateDown;
  }
  
  public void setQueryBookDateDown(Date queryBookDateDown) {
    this.queryBookDateDown = queryBookDateDown;
  }
  
  public String getQueryOrderNo() {
    return this.queryOrderNo;
  }
  
  public void setQueryOrderNo(String queryOrderNo) {
    this.queryOrderNo = queryOrderNo;
  }
}
